package cn.hxzy.assignperson.service;

import cn.hxzy.common.domain.*;
import cn.hxzy.common.domain.ClassTable;
import cn.hxzy.common.domain.TeacherMajor;
import cn.hxzy.common.domain.vo.*;

import java.util.List;

import cn.hxzy.common.domain.TeacherMajor;

import java.util.List;
import java.util.Map;

public interface TeacherMajorService {
    /**
     * 查询所有Gl记录
     *
     * @return 返回所有Gl记录的列表
     */
    List<FuzeVo> selectAllGl();

    /**
     * 根据ID查询所有相关信息
     *
     * @param id 记录的ID
     * @return 返回指定ID的InsertVo对象
     */
    InsertVo selectByIdall(Integer id);

    /**
     * 查询所有学校记录
     *
     * @return 返回所有学校记录的列表
     */
    List<School> selectAllSchool();

    /**
     * 插入用户记录
     *
     * @param insertVo 包含用户信息的InsertVo对象
     * @return 返回插入操作影响的行数
     */
    int insertUser(InsertVo insertVo);

    /**
     * 更新用户记录
     *
     * @param insertVo 包含更新后用户信息的InsertVo对象
     * @return 返回更新操作影响的行数
     */
    int updateUser(InsertVo insertVo);

    /**
     * 根据ID删除教师专业记录
     *
     * @param id 教师专业的ID
     * @return 返回删除操作影响的行数
     */
    int deleteTeacherMajor(Integer id);

    /**
     * 根据mid查询所有教师记录
     *
     * @param mid 教师的mid
     * @return 返回所有教师记录的列表
     */
    List<User> selectAllTeacher(Integer mid);

    /**
     * 查询所有教师Gl记录
     *
     * @return 返回所有教师Gl记录的列表
     */
    List<TeacherVo01> selectteacherGl();

    /**
     * 添加方向
     *
     * @param directionName 方向名称
     * @return 返回插入操作影响的行数
     */
    int addDirection(String directionName);

    /**
     * 更新方向信息
     *
     * @param direction 包含更新后方向信息的Direction对象
     * @return 返回更新操作影响的行数
     */
    int updateDirection(Direction direction);

    /**
     * 更新教师的科研ID
     *
     * @param userId 用户ID
     * @param mid 科研ID
     */
    void updateTeacheringResearchId(Integer userId, Integer mid);
    /**
     * 根据majorId先去删除中间表的信息然后再去删除专业表
     *
     * @param id
     *
     */
    int deleteTeacherMajord(Integer id);





//管理员向上
//================================================================================================================
//教研组组长向下


    //获取专业下的班级
    List<ClassTableVo> selectAllClassByMarjorId(Integer id);



    //根据专业id查询老师的相关信息
    List<TeacherVo> selectteachers(Integer tid);

    //分配老师的方法
    Integer addOrUpdate(Map<String, Object> map);

    //创建班级方法
    Integer addOneClass(ClassTable classTable);

    //修改班级
    Integer updateOneClass(ClassTable classTable);
//    查询专业名称通过id
    Direction selectDirectionById(Integer id);
}
